package com.ruoyi.announcement.service.impl;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.announcement.mapper.NoticeMapper;
import com.ruoyi.announcement.domain.Notice;
import com.ruoyi.announcement.service.INoticeService;
import org.springframework.web.jsf.FacesContextUtils;

import javax.xml.transform.TransformerFactory;

/**
 * 公告管理Service业务层处理
 *
 * @author tza
 * @date 2023-03-07
 */
@Service
public class NoticeServiceImpl implements INoticeService {
    @Autowired
    private NoticeMapper noticeMapper;

    /**
     * 查询公告管理
     *
     * @param noId 公告管理主键
     * @return 公告管理
     */
    @Override
    public Notice selectNoticeByNoId(Integer noId) {
        return noticeMapper.selectNoticeByNoId(noId);
    }

    /**
     * 查询公告管理列表
     *
     * @param notice 公告管理
     * @return 公告管理
     */
    @Override
    public List<Notice> selectNoticeList(Notice notice) {
        List<Notice> notices = noticeMapper.selectNoticeList(notice);
        //遍历数据
        for (Notice notice1 : notices) {
            Date cancel = notice1.getCancelTime();
            //System.out.println("获取数据库时间" + cancel);
            //不为空判断
            if (cancel != null) {
                //获取当前数据库字段的时间毫秒值
                long cancelTime = cancel.getTime();
                //System.out.println("获取截止时间" + cancelTime);
                //获取当前时间毫秒值
                long nowTime = System.currentTimeMillis();
                //已过截止时间判断
                if (cancelTime < nowTime) {
                    long difms = (nowTime - cancelTime) / 3600 / 24 / 1000;
                    notice1.setIsOverdue("已过截止时间" + difms + "天");
                }
            }
        }
        return notices;
        //return noticeMapper.selectNoticeList(notice);
    }

    /**
     * 新增公告管理
     *
     * @param notice 公告管理
     * @return 结果
     */
    @Override
    public boolean insertNotice(Notice notice) {
        // 判断时间是否为空
        Date createTime = notice.getCancelTime();
        //Date createTime = notice.getCancelTime();
        System.out.println("修改后的时间" + createTime);
        //判断修改后是否有截止时间
        if (createTime == null) {
            //没有截止时间，if_cancel字段设置为否
            notice.setIfCancel("否");
        } else {
            //有截止时间，if_cancel字段设置为是
            notice.setIfCancel("是");
        }


        // 发布时间是否大于截止时间
        //获取数据库开始时间
        Date publishTime = notice.getPublishTime();
        long publishTime_ms = publishTime.getTime();
        // 获取数据库结束时间
        //Date createTime = notice.getCancelTime();
        long createTime_ms = 0L;
        if (createTime != null){
             createTime_ms = createTime.getTime();
        } else {
            createTime_ms = System.currentTimeMillis();
        }

        if (publishTime_ms  <= createTime_ms){
             noticeMapper.insertNotice(notice);
            return true;
        }
        return false;




        //return noticeMapper.insertNotice(notice);
    }

    /**
     * 修改公告管理
     *
     * @param notice 公告管理
     * @return 结果
     */
    @Override
    public int updateNotice(Notice notice) {

        Date createTime = notice.getCancelTime();
        System.out.println("修改后的时间" + createTime);
        //判断修改后是否有截止时间
        if (createTime == null) {
            //没有截止时间，if_cancel字段设置为否
            notice.setIfCancel("否");
        } else {
            //有截止时间，if_cancel字段设置为是
            notice.setIfCancel("是");
        }
        return noticeMapper.updateNotice(notice);
    }

    /**
     * 批量删除公告管理
     *
     * @param noIds 需要删除的公告管理主键
     * @return 结果
     */
    @Override
    public int deleteNoticeByNoIds(Integer[] noIds) {
        return noticeMapper.deleteNoticeByNoIds(noIds);
    }

    /**
     * 删除公告管理信息
     *
     * @param noId 公告管理主键
     * @return 结果
     */
    @Override
    public int deleteNoticeByNoId(Integer noId) {
        return noticeMapper.deleteNoticeByNoId(noId);
    }
}
